#ifndef SHADER_MANAGER_H_INCLUDED
#define SHADER_MANAGER_H_INCLUDED
#include "Singleton.h"
#include <string>
#include <map>
#include "GLShader.h"
#include <GL/glew.h>

class ShaderManager : public Uncopyable
{
private:
	ShaderManager();
	friend class Singleton<ShaderManager>;

public:
	~ShaderManager() {}
	bool GPUSupportsShaders();
	bool LoadShader(const std::string& Vert, const std::string& Frag, const std::string& Tag);
	void UseShader(const std::string& Tag);
	void UnBind();

private:

	std::map<std::string, GLShader> m_ShaderMap;

};

typedef Singleton<ShaderManager> TheShaderManager;


#endif